# Технологический стек Node.js 2022-2023

Объем материала: 20 часов лекций, еженедельно 2 часа семинары в течении года, репозитории с примерами кода.
Что нужно знать на входе:
- [Синтаксис JavaScript без всяких триков](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Fundamentals.md)
- [Основы асинхронного программирования](https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md)
- Уверенно владеть git, иметь github аккаунт
- Желательно docker, иметь рабочую машину на linux или mac
- Любая среда разработки, IDE или редактор

Ссылки на старый курс:
- [Структура со ссылками на видео и репозитории с примерами кода](NodeJS.md)
- [Для части лекций есть таймкоды и подробное оглавление](NodeJS-timecodes.md)

Чем это курс не является: это не чтение документации, не курс по фреймворкам, не курс по Metarhia, не повторение старого курса, не лайвкодинг и не мастеркласс, не стрим. Новый курс - это максимально сконцентрированная информация и практические задачи по разработке на чистой ноде но с хорошей архитектурой и использованием всех современных возможностей Node.js

👉 Patreon: Подписаться: https://www.patreon.com/tshemsedinov  
👉 Видео обзор курса: https://youtu.be/UGGzSEfCjPU

## Содержание

- Node.js Введение в технологию, обзор API, основные идеи: за счет чего реализована экономия памяти, cpu, I/O
- Системы модулей CJS (`CommonJS`) and ESM (`ECMAScrip modules`), особенности в Node.js, зависимости и пакеты `npm`
- Асинхронное программирование: `event loop`, `async hooks`, `race condition`, `callbacks`, `async/await`, `thenable`, `promises`
- Параллельное программирование: `threads`, `semaphore`, `mutex`, `spin locks`, `Atomics`, `SharedArrayBuffer`, Web Locks API
- Реактивное программирование: `Observer`, `EventEmitter`, `RxJS`, асинхронные и конкурентные очереди, `async collectors`
- Изоляция кода и данных в Node.js: `vm`, `v8`, защита `global`, контекстов, модулей и прототипов от патчинга
- Работа с файлами: `fs`, `Buffer`, `Stream`, `pipe`, `backpressure`, Web streams API, наблюдение за файловой системой
- Структура и архитектура проекта, слои, `DDD`, `Clean architecture`, связанность и связность кода, протекание абстракций
- Принципы `GRASP` и `SOLID` в `JavaScript` с адаптацией для Node.js, `IoC` (инверсия управления) и `DI` (внедрение зависимостей)
- Сетевые протоколы: `HTTP(S)`, `HTTP2`, `TCP`, `UDP`, `TLS`, `Websocket`, `SSE`, `HTTP/3` (`QUIC`)
- Принципы взаимодействия систем: `REST`, `RPC`, `Pipeline`, `Event-bus`, `Event-broker`, клиент-сервер, `peer-to-peer`
- API на принципах транспорт-агностик и фреймворк-агностик, контракты, реализация сессий и сервиса аутентификации
- Приложения, приближенные к реальному времени, интерактивность и коллаборативные приложения на вебсокетах
- Распространенные паттерны и антипаттерны в приложениях на Node.js
- Распределенные системы, высоконагруженные системы, балансировка нагрузки, кластеризация и масштабирование, IP sticky
- Вопросы безопасности: `DoS`, `XSS`, `Path traversal`, `CSRF`, `SQL`-инъекции
- Работа с базами данных, слой доступа к данным, описание структуры данных, доступ к данным, `postgres`, `redis`, `in-memory`
- Сравнение подходов `domain in the middle`, `ORM`, `active record`, `repository`, `data mapper`, схемы данных, `query builder`
- Утечки памяти и ресурсов, количественная оценка надежности, устойчивости, доступности, гибкости, качества
- Инфраструктура и инструментарий: логирование, тестирование, линтеры, отладка, CI/CD, встроенный testing framework
- `Performance hooks`, телеметрия ресурсов и оптимизация: I/O bound, CPU bound, memory bound, профилирование
- `Graceful shutdown` в Node.js, работа с ошибками и исключениями, `unhandled exceptions`, `stack trace`
- Встроенная криптография в Node.js (`openssl`), `addons`, `plugins`, `Node-API` (ранее `N-API`), `WASI` (Webassembly)
- `Serverless` и облачные `FaaS` решения на базе Node.js
- Практическое использование интроспекции, рефлекcии и скаффолдинга

# Доступ

План «Expert» на 1 год за $204 на Patreon.
Помесячная подписка «Expert» не дает доступа.
Доступ к матераиалам курса остается и после завершения подписки.

👉 Подписаться: https://www.patreon.com/tshemsedinov

## Дополнительные материалы

- [Байки про JavaScript и Node.js с Тимуром Шемсединовым](https://youtu.be/hoKKYKMadQs)
- [Стратегия входа Node.js в корпоративный сектор](https://youtu.be/FLcBrP1KFYk)
- [Node.js Middleware – никогда больше!](https://youtu.be/RS8x73z4csI)
